package com.qianying.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qianying.comment.CommonResult;
import com.qianying.dto.ShopUserInfoDTO;
import com.qianying.entity.ShopUserInfo;

import java.util.List;

/**
 * 门店用户信息Service接口
 */
public interface ShopUserInfoService extends IService<ShopUserInfo> {

    /**
     * 新增门店用户信息
     *
     * @param shopUserInfo 门店用户信息
     * @return 操作结果
     */
    CommonResult<?> saveShopUserInfo(ShopUserInfo shopUserInfo);

    /**
     * 更新门店用户信息
     *
     * @param shopUserInfo 门店用户信息
     * @return 操作结果
     */
    CommonResult<?> updateShopUserInfo(ShopUserInfo shopUserInfo);

    /**
     * 根据ID删除门店用户信息
     *
     * @param id 主键ID
     * @return 操作结果
     */
    CommonResult<?> removeShopUserInfoById(Long id);

    /**
     * 根据ID查询门店用户信息
     *
     * @param id 主键ID
     * @return 门店用户信息
     */
    CommonResult<ShopUserInfo> getShopUserInfoById(Long id);

    /**
     * 根据用户ID查询门店用户信息
     *
     * @param userId 用户ID
     * @return 门店用户信息
     */
    CommonResult<ShopUserInfo> getByUserId(Long userId);

    /**
     * 根据客户ID查询门店用户列表
     *
     * @param customerId 客户ID
     * @return 门店用户列表
     */
    CommonResult<List<ShopUserInfo>> getByCustomerId(Long customerId);

    /**
     * 根据门店ID查询门店用户列表
     *
     * @param shopId 门店ID
     * @return 门店用户列表
     */
    CommonResult<List<ShopUserInfo>> getByShopId(Long shopId);

    /**
     * 分页查询门店用户信息
     * @param pageNum 页码
     * @param pageSize 每页条数
     * @param customerId 客户ID（可选）
     * @param shopId 门店ID（可选）
     * @return 分页结果
     */
    /**
     * 分页查询门店用户信息
     */
    CommonResult<IPage<ShopUserInfoDTO>> getPageList(
            Integer pageNum,
            Integer pageSize,
            Long customerId,
            Long regionId,
            Long shopId,
            String department,
            String job,
            String realName);
}
